package regexp;

import regexp.utils.RegExpFind;

/**
 * @author DCSGO
 * @version 1.0
 * 限定符
 * 用于指定其前面的字符和组合项连续出现多少次
 */
@SuppressWarnings({"all"})
public class Regexp05 {
    public static void main(String[] args) {
        //{n} 匹配n个字符
        RegExpFind.printFind("1122111221111", "1{3}");
        /*
         * 1{3}匹配到：
         * 111 111
         */
        RegExpFind.printFind("1122111221111", "11{2}");
        /*
         * 11{2}匹配到：
         * 111 111
         */
        RegExpFind.printFind("122333444455555975", "[13579]{3}");
        /*
         * [13579]{3}匹配到：
         * 333 555 559
         */
        RegExpFind.printFind("abc abcabc abcabcabc aabbcc", "(abc){2}");
        /*
         * (abc){2}匹配到：
         * abcabc abcabc
         */

        //{n,m} 匹配至少n个但不多于m个匹配
        RegExpFind.printFind("abcabcabcabcabcabcaabbcc", "(abc){2,5}");
        /*
         * (abc){2,5}匹配到：
         * abcabcabcabcabc
         */
        //Java中的正则表达式默认是贪婪匹配，即尽可能多的匹配字符
        RegExpFind.printFind("cccccccccc", "c{2,5}");
        /*
         * c{2,5}匹配到：
         * ccccc ccccc
         */
        RegExpFind.printFind("abcccadefghaabbccdd", "[abcde]{3,5}");
        /*
         * [abcde]{3,5}匹配到：
         * abccc ade aabbc cdd
         */

        //{n,}指定至少n个字符
        RegExpFind.printFind("abcccadefghaabbccdd", "[abcde]{3,}");
        /*
         * [abcde]{3,}匹配到：
         * abcccade aabbccdd
         */

        //* 指定字符重复0次或多次
        RegExpFind.printFind("111111111", "1*");
        /*
         * 1*匹配到：
         * 111111111
         */
        RegExpFind.printFind("abcab", "abc*");
        /*
         * (abc)*匹配到：
         * abc ab
         */

        //+ 指定字符重复1次或多次
        RegExpFind.printFind("aababc", "a+(bc)*");
        /*
         * a+(bc)*匹配到：
         * aa abc
         */

        //? 字段字符重复0次或1次
        RegExpFind.printFind("aababc", "ab?");
        /*
         * ab?匹配到：
         * a ab ab
         */

        RegExpFind.printFind("刘恋-刘杰-邓超-王杰", "刘{1}\\W");
        /*
         * 刘{1}\W匹配到：
         * 刘恋 刘杰
         */
    }
}
